home *** CD-ROM | disk | FTP | other *** search
- PCA(1) Last changed: 3-5-99
-
-
- NNAAMMEE
- ppccaa - Power C Analyzer
-
- SSYYNNOOPPSSIISS
- //uussrr//lliibb//ppccaa [ _o_p_t_i_o_n_s ] ...
- //uussrr//lliibb6644//ccmmppllrrss//ppccaa [ _o_p_t_i_o_n_s ] ...
-
- IIMMPPLLEEMMEENNTTAATTIIOONN
- IRIX systems (--oo3322 ABI only)
-
- DDEESSCCRRIIPPTTIIOONN
- For --nn3322 and --6644 ABIs, ppccaa has been replaced by the --aappoo option.
-
- ppccaa is a source-to-source optimizing C preprocessor that discovers
- parallelism in C code. ppccaa concurrentizes C by restructuring certain
- portions of code and then adding parallel programming directives where
- possible. The amount of code that is concurrentized varies depending
- on the value of certain ppccaa command line options, directives, and
- assertions. For more information, refer to the _I_R_I_S _P_o_w_e_r _C _U_s_e_r'_s
- _G_u_i_d_e.
-
- ppccaa is usually invoked as an option to the cccc(1) command, although it
- can be run separately. When ppccaa is used as part of a cccc compilation,
- the ppccaa _o_p_t_i_o_ns must be passed via the --WWKK mechanism. See the cccc(1)
- man page for details of the --WW option.
-
- ppccaa requires a single input source file, which can be specified using
- the --ii option. Specifying a filename as a command-line argument is
- also sufficient, as any argument not recognized as an option is
- treated as an input filename.
-
- ppccaa can produce two types of output. The first type is the
- concurrentized C source code, and the second type is the annotated
- listing, whose contents vary depending on the value of the --lloo command
- line option. Filenames for these two types of output can be set using
- the --ccmmpp and --ll options, respectively. If the --ccmmpp option is not
- specified, the output code will be sent to standard output. If no --ll
- option is specified, and some type of listing information is requested
- using the --lloo option, then this listing information will also be sent
- to standard output.
-
- ppccaa accepts the following command line options:
-
- --aarrll==<_i_n_t_e_g_e_r>
- Long name: --aaddddrreessss__rreessoolluuttiioonn__lleevveell==<_i_n_t_e_g_e_r>
- Default value: --aaddddrreessss__rreessoolluuttiioonn__lleevveell==11
-
- The --aarrll option controls the assumptions ppccaa makes about
- memory aliases. The integer value, which ranges from 0 (no
- assumptions) to 4 (assume everything), specifies the level
- of assumptions that ppccaa is to make about the behavior of the
- code. Each level is cumulative (i.e., level 4 also makes
- all the assumptions of the lower levels).
-
- The following are the assumption level definitions:
-
-
- 00 No assumptions are made.
-
- 11 Assumes that no pointer self references.
-
- 22 Assumes that function arguments are distinct from each
- other.
-
- 33 Assumes that local pointers and arrays are distinct
- from global pointers and arrays.
-
- 44 Assumes that all pointers and arrays are distinct from
- each other.
-
- --aarrccllmm==<_i_n_t_e_g_e_r>
- Long name: --aarrcclliimmiitt==<_i_n_t_e_g_e_r>
- Default value: --aarrcclliimmiitt==55000000
-
- The --aarrcclliimmiitt option sets the size of the dependence arc
- data structure that ppccaa uses to perform data dependence
- analysis. This data structure is dynamically allocated on a
- loop nest by loop nest basis. By default, this data
- structure is allocated with a size = max (# of statements *
- 4, --aarrcclliimmiitt value). If a loop contains too many dependence
- relationships and cannot be represented in the dependence
- data structure, ppccaa will surrender optimization of the loop.
-
- You may use the --aarrcclliimmiitt option to increase the size of the
- data structure to enable ppccaa to perform more optimizations.
- (Most users do NOT need to change this value.)
-
- --cchhll==<_i_n_t_e_g_e_r>
- Long name: --ccaacchheelliinnee==<_i_n_t_e_g_e_r>
- Default value: --ccaacchheelliinnee==6644
-
- The --ccaacchheelliinnee option informs ppccaa of the width of the memory
- channel (in bytes) between cache and main memory.
-
- --cchhss==<_i_n_t_e_g_e_r>
- Long name: --ccaacchheessiizzee==<_i_n_t_e_g_e_r>
- Default value: --ccaacchheessiizzee==6644
-
- The --ccaacchheessiizzee option informs ppccaa of the size (in kilobytes)
- of the cache memory.
-
- --ccppllcc==<_i_n_t_e_g_e_r>[,<_i_n_t_e_g_e_r>]
- Long name: --ccaacchhee__pprreeffeettcchh__lliinnee__ccoouunntt==<_i_n_t_e_g_e_r>[,<_i_n_t_e_g_e_r>]
- Default value: --ccaacchhee__pprreeffeettcchh__lliinnee__ccoouunntt==00
-
- The --ccppllcc option informs ppccaa of the number of additional
- cache lines that are fetched during a cache miss. The first
- number corresponds to the primary cache, and the second
- number, if specified, corresponds to the secondary cache.
-
- --[[nn]]ccmmpp[[==<_f_i_l_e>]
- Long name: --[[nnoo]]ccmmpp[[==<_f_i_l_e>]
- Default value: ssttaannddaarrdd oouuttppuutt
-
- The --ccmmpp (compilable) option instructs ppccaa to place the
- optimized C program in a specified transformed program file.
- If --ccmmpp==<_f_i_l_e> is specified, the transformed C is written to
- that file. If --ccmmpp is specified, the transformed code is
- written to _f_i_l_e_n_a_m_e..mm, where _f_i_l_e_n_a_m_e is the input file name
- with any trailing ..cc removed. If no --ccmmpp option is
- specified, the transformed code is written to standard
- output.
-
- To disable generation of the C output file, specify --nnooccmmpp
- on the command line.
-
- --[[nn]]ccoonncc
- Long name: --[[nnoo]]ccoonnccuurrrreennttiizzee
- Default value: --ccoonnccuurrrreennttiizzee
-
- This command line option directs ppccaa to perform
- concurrentization, while --nnooccoonncc directs ppccaa to perform only
- scalar optimizations.
-
- --[[nn]]ccpp==<_l_i_s_t>
- Long name: --[[nnoo]]ccmmppooppttiioonnss==<_l_i_s_t>
- Default value: --nnooccmmppooppttiioonnss
-
- The --ccmmppooppttiioonnss option specifies additional information for
- inclusion in the transformed code file.
-
- The following option can be specified:
-
-
- ii Insert line numbers that reference the original source.
-
- --ddoollllaarr
- No short name.
- Default value: ooffff
-
- The --ddoollllaarr option allows dollar signs to be used in
- identifiers under both Kernighan and Ritchie and ANSI C.
-
- --ddpprr==<_i_n_t_e_g_e_r>
- Long name: --ddpprreeggiisstteerrss==<_i_n_t_e_g_e_r>
- Default value: --ddpprreeggiisstteerrss==1122
-
- The --ddpprreeggiisstteerrss option specifies the number of double
- precision floating point registers each processor has
- available for expression evaluation.
-
- --eeiiiiffgg==<_i_n_t_e_g_e_r>
- Long name: --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh==<_i_n_t_e_g_e_r>
- Default value: --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh==2200
-
- The --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh option controls the rewriting
- of iiffs nested within loops. The value of the option (which
- must be in the range 0 to 100) specifies a limit on the
- number of executable statements in the nested iiff. If the
- number of statements in the iiff exceeds this limit, then ppccaa
- will not rewrite the code. If there are fewer statements,
- then ppccaa will interchange the loop and if statements for
- improved execution speed.
-
- --ffllooaatt
- No short name.
- Default value: ooffff
-
- In Kernighan and Ritchie C, all variables declared as type
- ffllooaatt are promoted to type ddoouubbllee by default. The --ffllooaatt
- option prevents this promotion to double. This option is
- ignored under --ssyynnttaaxx==aa, because ANSI C does not promote
- variables of type ffllooaatt to ddoouubbllee.
-
- --ffpprr==<_i_n_t_e_g_e_r>
- Long name: --ffpprreeggiisstteerrss==<_i_n_t_e_g_e_r>
- Default value: --ffpprreeggiisstteerrss==1122
-
- The --ffpprreeggiisstteerrss option specifies the number of single
- precision floating point registers each processor has
- available for expression evaluation.
-
- --[[nn]]ffuussee
- Long name: --[[nnoo]]ffuussee
- Default value: --ffuussee
-
- This command line option enables lloooopp ffuussiioonn, a conventional
- compiler optimization that transforms two adjacent loops
- into a single loop.
-
- Setting --ssccaallaarroopptt to at least 2, --ooppttiimmiizzee==55 is also
- required to enable loop fusion.
-
- --hheeaapp==<_l_i_s_t>
- Long name: --hheeaapplliimmiitt==<_i_n_t_e_g_e_r>
- Default value: --hheeaapplliimmiitt==110000
-
- The --hheeaapplliimmiitt option specifies the maximum size in
- megabytes to which the memory heap is allowed to grow to
- when ppccaa processes a source file. If this limit is reached,
- ppccaa will stop processing the source code.
-
- --hhllii==<_l_i_s_t>
- Long name: --hhooiisstt__lloooopp__iinnvvaarriiaannttss==<_i_n_t_e_g_e_r>
- Default value: --hhooiisstt__lloooopp__iinnvvaarriiaannttss==11
-
- This option controls code hoisting of loop-invariant
- expressions from loops. Note that this switch is
- independent of the switches that control the floating of
- invariant-IFs out of loops, --eeaacchh__iinnvvaarriiaanntt__iiff__ggrroowwtthh and
- --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh. This option accepts the following
- settings:
-
-
- 00 Turns off the hoisting of invariant code from loops.
-
- 11 Floats all loop invariant expressions that are not
- under the control of an IF-structure within the given
- loop nest. This is the default setting.
-
- 22 The same behavior as level 1.
-
- 33 Floats all loop-invariant expressions from loops.
-
- If there is invariant code that is protected by an IF-
- structure and the hoisting value is less than 3, then
- ppccaa will generate a message to that effect in your
- output listing.
-
- --ii==<_f_i_l_e> Long name: --iinnppuutt==<_f_i_l_e>
- Default value: nnoonnee
-
- The --ii option instructs ppccaa to read its input code from the
- specified file.
-
- --iinnll==<_l_i_s_t>
- Long name: --iinnlliinnee==<_l_i_s_t>
- Default value: ooffff
-
- --iinnllcc==<_l_i_s_t>
- Long name: --iinnlliinnee__aanndd__ccooppyy==<_l_i_s_t>
- Default value: ooffff
-
- --iippaa==<_l_i_s_t>
- Long name: --iippaa==<_l_i_s_t>
- Default value: ooffff
-
- The --iinnlliinnee, --iinnlliinnee__aanndd__ccooppyy, and --iippaa options provide ppccaa
- with a list of routines to analyze. If the option is
- specified without an argument list, ppccaa will try to
- inline/analyze all the called functions in the _i_n_l_i_n_i_n_g
- _u_n_i_v_e_r_s_e (specified by the --iinnlliinnee__ffrroomm__ffiilleess,
- --iinnlliinnee__ffrroomm__lliibbrraarriieess, --iippaa__ffrroomm__ffiilleess, or
- --iippaa__ffrroomm__lliibbrraarriieess options). If a list of names is
- included, for example, --iinnlliinnee==mmkkccooeeff,,yyvvaall, then just the
- routines named will be inlined/analyzed.
-
- The --iinnlliinnee and --iippaa command line options are overridden by
- the ##pprraaggmmaa iinnlliinnee and ##pprraaggmmaa iippaa directives.
-
- The --iinnlliinnee__aanndd__ccooppyy option functions like the --iinnlliinnee
- option, except that if all references to a function are
- inlined, the text of the routine is not optimized, but is
- copied unchanged to the transformed code file. This is
- intended for use when inlining routines from the same file
- as the call, and has no special effect when the routines
- being inlined are being taken from a library or another
- source file.
-
- When a subprogram has been inlined everywhere it is used,
- leaving it unoptimized saves compilation time. When a
- program involves multiple source files, the unoptimized
- routine will still be available in case one of the other
- source files contains a reference to it, so no errors will
- result.
-
- NOTE: the iinnlliinnee__aanndd__ccooppyy algorithm assumes that all calls
- and references to the routine precede it in the source file.
- If the routine is referenced after the text of the routine,
- and that particular call site cannot be inlined, the
- unoptimized version of the routine will be invoked.
-
- --iinnccrr==<_f_i_l_e>
- Long name: --iinnlliinnee__ccrreeaattee==<_f_i_l_e>
- Default value: ooffff
-
- --iippaaccrr==<_f_i_l_e>
- Long name: --iippaa__ccrreeaattee==<_f_i_l_e>
- Default value: ooffff
-
- These options instruct ppccaa to build a library file
- containing partially-analyzed routines for later
- inlining/analyzing. The library created is used with the
- --iinnlliinnee__ffrroomm__lliibbrraarriieess or --iippaa__ffrroomm__lliibbrraarriieess option.
- Libraries created with --iinnlliinnee__ccrreeaattee can be used with
- either inlining or interprocedural analysis, since they
- contain essentially complete descriptions of the functions
- included. Libraries created with --iippaa__ccrreeaattee can be used
- only with interprocedural analysis, since they do not have
- the complete text of the functions, just the data
- relationships information.
-
- Any filename can be used for the library name. An extension
- ..kklliibb is preferred, for maximum compatibility with the
- --iinnlliinnee__ffrroomm__lliibbrraarriieess and --iippaa__ffrroomm__lliibbrraarriieess options.
-
- --iinndd==<_i_n_t_e_g_e_r>
- Long name: --iinnlliinnee__ddeepptthh==<_i_n_t_e_g_e_r>
- Default value: --iinnlliinnee__ddeepptthh==22
-
- This option sets the maximum level of subprogram nesting
- that ppccaa will attempt to inline. Higher values instruct ppccaa
- to trace function calls further and thus produce more
- inlined code.
-
- The ##pprraaggmmaa [[nnoo]]iinnlliinnee directive, when enabled, is not
- affected by the --iinnlliinnee__ddeepptthh restrictions.
-
- The argument values and their meanings are:
-
-
- --11 Inline only routines that do not contain procedure or
- function calls.
-
- 00 Use the default value (2).
-
- 11--1100 Inline routines to this depth.
-
- --iinnffff==<_l_i_s_t>
- Long name: --iinnlliinnee__ffrroomm__ffiilleess==<_l_i_s_t>
- Default value: ccuurrrreenntt ssoouurrccee ffiillee
-
- --iinnffll==<_l_i_s_t>
- Long name: --iinnlliinnee__ffrroomm__lliibbrraarriieess==<_l_i_s_t>
- Default value: ooffff
-
- --iippaaffff==<_l_i_s_t>
- Long name: --iippaa__ffrroomm__ffiilleess==<_l_i_s_t>
- Default value: ccuurrrreenntt ssoouurrccee ffiillee
-
- --iippaaffll==<_l_i_s_t>
- Long name: --iippaa__ffrroomm__lliibbrraarriieess==<_l_i_s_t>
- Default value: ooffff
-
- These options provide ppccaa with the locations of functions
- available for inlining/interprocedural analysis. (The total
- set of available functions is called the inlining (or IPA)
- universe.)
-
- The --iinnlliinnee__ffrroomm__ffiilleess and --iippaa__ffrroomm ffiilleess options take the
- names of source files and directories containing source
- files. Including a directory, for example,
- --iippaaffff==//uussrr//iippaalliibb, is equivalent to the UNIX notation
- //uussrr//iippaalliibb//**..cc. (Do not use shell wild card characters in
- the list of files and directories.) Note that the specified
- files must have already been pre-processed by ccpppp or aaccpppp
- (if necessary).
-
- The --iinnlliinnee__ffrroomm__lliibbrraarriieess and --iippaa__ffrroomm__lliibbrraarriieess options
- take the names of libraries created with the --iinnlliinnee__ccrreeaattee
- and --iippaa__ccrreeaattee options and directories containing such
- libraries. In directories, the ppccaa libraries are identified
- by the extension ..kklliibb.
-
- Multiple files/libraries or directories may be specified in
- one option, separated by commas. Multiple occurrences of
- these options may be specified on the command line.
-
- --iinnllll==<_i_n_t_e_g_e_r>
- Long name: --iinnlliinnee__lloooopplleevveell==<_i_n_t_e_g_e_r>
- Default value: --iinnllll==22
-
- --iippaallll==<_i_n_t_e_g_e_r>
- Long name: --iippaa__lloooopplleevveell==<_i_n_t_e_g_e_r>
- Default value: --iippaallll==22
-
- The --iinnlliinnee__lloooopplleevveell and --iippaa__lloooopplleevveell options enable the
- user to limit inlining to just functions which are
- referenced in nested loops, where the effects of reduced
- function call overhead or enhanced optimizations will be
- multiplied.
-
- The parameter is defined from the most deeply nested
- function reference. --iinnllll==11 restricts inlining to functions
- referenced in the deepest loop nest. --iinnllll==33 restricts
- inlining to those routines referenced at the three deepest
- levels. The ffoorr loop nest level of each function reference
- is included in the optional calling tree section of the
- listing files.
-
- The ##pprraaggmmaa [[nnoo]]iinnlliinnee and ##pprraaggmmaa [[nnoo]]iippaa directives, when
- enabled, are not affected by the --iinnlliinnee__lloooopplleevveell and
- --iippaa__lloooopplleevveell restrictions.
-
- --iinnmm Long name: --iinnlliinnee__mmaannuuaall
- Default value: ooffff
-
- --iippaamm Long name: --iippaa__mmaannuuaall
- Default value: ooffff
-
- These options instruct ppccaa to recognize the ##pprraaggmmaa
- [[nnoo]]iinnlliinnee and ##pprraaggmmaa [[nnoo]]iippaa directives. This allows
- manual control over which functions are inlined/analyzed at
- which call sites.
-
- The default is to ignore these ##pprraaggmmaa directives. When
- --iinnlliinnee__mmaann or --iippaa__mmaann is included on the command line, the
- ##pprraaggmmaa directives are enabled. Because ##pprraaggmmaa [[nnoo]]iinnlliinnee
- and ##pprraaggmmaa [[nnoo]]iippaa are not affected by the
- --iinnlliinnee__lloooopplleevveell and --iippaa__lloooopplleevveell command line options,
- they can be used with command line control to select
- functions or call sites that the regular selection algorithm
- would reject.
-
- --llmm==<_i_n_t_e_g_e_r>
- Long name: --lliimmiitt==<_i_n_t_e_g_e_r>
- Default value: --lliimmiitt==55000000
-
- To reduce the compile time, ppccaa estimates how long it takes
- to analyze each loop nest construct. If a loop is too
- deeply nested, ppccaa ignores the outer loop and recursively
- visits the inner loops. The loop nest limit can be used to
- control what ppccaa considers too deeply nested. For more
- information, refer to the _I_R_I_S _P_o_w_e_r _C _U_s_e_r'_s _G_u_i_d_e.
-
- --llnn==<_i_n_t_e_g_e_r>
- Long name: --lliinneess==<_i_n_t_e_g_e_r>
- Default value: --lliinneess==5555
-
- This option enables the ppccaa listing to be paginated for
- printing. The number of lines per page on the listing may
- be changed by using the --lliinneess option. The --lliinneess==00 option
- directs ppccaa to paginate only at subroutine boundaries.
-
- --[[nn]]ll[[==<_f_i_l_e>]]
- Long name: --[[nnoo]]lliisstt[[==<_f_i_l_e>]]
- Default value: ssttaannddaarrdd oouuttppuutt
-
- If some type of listing information is requested using the
- --lloo option, the --lliisstt option specifies the destination of
- that listing. If --lliisstt==<_f_i_l_e> is specified, the listing is
- written to the specified file. If --lliisstt is specified
- without a filename, the listing file is written to
- _f_i_l_e_n_a_m_e..llsstt, where _f_i_l_e_n_a_m_e is the input file name with any
- trailing ..cc removed. If no --lliisstt option is specified, any
- listing information requested is written to the standard
- output. To disable generation of any listing information,
- enter --nnoolliisstt on the command line.
-
- --lloo==<_l_i_s_t>
- Long name: --lliissttooppttiioonnss==<_l_i_s_t>
- Default value: nnoo lliissttiinngg
-
- The --lliissttooppttiioonnss option tells ppccaa what information to
- include in the listing file.
-
- --lliissttooppttiioonnss can enable the following options to be included
- in the listing:
-
-
- cc Calling tree.
-
- kk Print ppccaa options active within the program unit.
-
- ll Loop-by-loop optimization table.
-
- nn Program unit names as processed (written to error
- file).
-
- pp Compilation performance statistics.
-
- ss Summary of the optimizations performed.
-
- --llww==<_i_n_t_e_g_e_r>
- Long name: --lliissttiinnggwwiiddtthh==<_i_n_t_e_g_e_r>
- Default value: --lliissttiinnggwwiiddtthh==8800
-
- This option sets the maximum line length for the listing
- file. This setting affects only the format of the loop
- summary table (--lloo==ll) and the options table (--lloo==kk). The
- only permissible values for --lliissttiinnggwwiiddtthh are 80 and 132.
-
- --[[nn]]mmaa==<_l_i_s_t>
- Long name: --[[nnoo]]mmaacchhiinnee==<_l_i_s_t>
- Default value: --mmaacchhiinnee==ss
-
- The --mmaacchhiinnee option is list-valued with three choices which
- may be set. The possible choices are:
-
-
- nn Tells ppccaa to concurrentize loops which generate non-
- stride-1 memory references.
-
- oo Tells ppccaa to only concurrentize outer loops. This
- capability is available to prevent concurrentization on
- applications that have small inner loop bounds, thereby
- reducing overhead costs. ppccaa determines
- concurrentization based on the overhead to benefit
- ratio. When the loop bounds are unknown at compile
- time, ppccaa may generate concurrent code for innermost
- loops, a practice that may be inefficient for the
- actual loop bounds.
-
- ss Tells ppccaa to concurrentize ffoorr loops which generate
- stride-1 memory references.
-
- The ss and nn choices may not be set simultaneously.
-
- --mmiiiiffgg==<_i_n_t_e_g_e_r>
- Long name: --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh==<_i_n_t_e_g_e_r>
- Default value: --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh==550000
-
- The --mmaaxx__iinnvvaarriiaanntt__iiff__ggrroowwtthh option controls the rewriting
- of iiff statements nested within loops. The value of the
- option (which must be in the range 0 to 1000) specifies a
- limit on the total number of additional executable
- statements which can be generated by this optimization. If
- the total number of extra statements generated exceeds this
- limit, then ppccaa will stop rewriting the code. If there are
- fewer statements, then ppccaa will continue to interchange the
- loop and iiff statements for improved execution speed.
-
- --mmcc==<_i_n_t_e_g_e_r>
- Long name: --mmiinnccoonnccuurrrreenntt==<_i_n_t_e_g_e_r>
- Default value: --mmiinnccoonnccuurrrreenntt==11000000
-
- The --mmiinnccoonnccuurrrreenntt option sets the minimum level of work
- which must be done by a loop in order for it to be a
- candidate for concurrentization. Loops that contain less
- work than --mmiinnccoonnccuurrrreenntt will not be concurrentized.
- Setting --mmiinnccoonnccuurrrreenntt==00 effectively allows all loops (if
- all other necessary conditions are met) to be
- concurrentized.
-
- --[[nn]]nnaammeeppaarrtt[[==<_i_n_t_e_g_e_r>,<_i_n_t_e_g_e_r>]]
- Long name: --[[nnoo]]nnaammeeppaarrttiittiioonniinngg[[==<_i_n_t_e_g_e_r>,<_i_n_t_e_g_e_r>]]
- Default value: --nnoonnaammeeppaarrttiittiioonniinngg
-
- This option looks at distinct array names and limits the
- number of arrays that that are referenced within a loop in
- order to avoid cache conflicts among them. For example,
- --nnaammeeppaarrtt can be used to break a loop that contains
- references to arrays aa and bb into two loops, one referencing
- array aa and the other referencing array bb. The two integer
- arguments specify the preferred minimum and maximum numbers
- of distinct arrays referenced in each distributed loop. If
- they are not specified, they default to 2 and 6. The
- --nnnnaammeeppaarrtt option turns off name partitioning.
-
- --ssccaallaarroopptt must be set to at least 3 for nnaammeeppaarrttiittiioonniinngg to
- work.
-
- --oo==<_i_n_t_e_g_e_r>
- Long name: --ooppttiimmiizzee==<_i_n_t_e_g_e_r>
- Default value: --ooppttiimmiizzee==55
-
- The --ooppttiimmiizzee option sets the optimization level. Each
- optimization level is cumulative (i.e., level 5 performs
- everything up to and including this level).
-
- The meaning of the optimization levels are as follows:
-
-
- 00 No optimization is done.
-
- 11 Only simple optimizations are done. Induction variable
- recognition is enabled.
-
- 22 Recognizes reductions in concurrent loops. Performs
- lifetime analysis to determine when last-value
- assignment of scalars is necessary. Performs more
- powerful data dependence tests to find parallelism.
-
- 33 Special techniques are used to break data dependence
- cycles that otherwise prevent concurrentization.
- Triangular loops are recognized and loop interchanging
- will be attempted to improve memory referencing.
- Special case data dependence tests are used. Special
- index sets, called wrap-around variables, are also
- recognized.
-
- 44 Two versions of a loop are generated, if necessary, to
- break a data dependence arc. Exact data dependence
- tests are used to allow more parallelism to be
- discovered.
-
- 55 Array expansion and loop fusion are enabled.
-
- --rr==<_i_n_t_e_g_e_r>
- Long name: --rroouunnddooffff==<_i_n_t_e_g_e_r>
- Default value: --rroouunnddooffff==00
-
- The --rroouunnddooffff option allows the user to specify the change
- from serial roundoff error that is tolerable. If an
- arithmetic reduction is accumulated in a different order
- than in the scalar program, the roundoff error is
- accumulated differently and the final result may differ from
- that of the original program's output. Although the
- difference is usually insignificant, certain restructuring
- transformations performed by ppccaa must be disabled to obtain
- exactly the same answers as the scalar program.
-
- ppccaa classifies its transformations by the amount of
- difference in roundoff error that can accumulate so the user
- can decide what level of roundoff error differences is
- allowable.
-
- The meanings of the switch values are as follows:
-
-
- 00 Allow no roundoff-changing transformations. Arithmetic
- recurrences and reductions are not concurrentized.
- Non-arithmetic reductions may still be concurrentized.
- Thus, the answers do not depend on the number of
- processors used.
-
- 11 Enable expression simplification which might generate
- overflow or underflow errors differently. Enable
- simplification of expressions with operands between
- binary and unary operators. Perform expression
- simplification which is exposed due to forward
- substitution. Enable code floating if the
- --ssccaallaarrooppttiimmiizzee option is greater than or equal to 1.
-
- 22 Allow loop interchanging around arithmetic reductions
- to be recognized. Perform concurrent reductions with
- pre-scheduled concurrent loops and local accumulation
- of reduction results.
-
- 33 Recognize real (float) induction variables. Enable sum
- reductions. Enable memory management optimizations if
- ssccaallaarrooppttiimmiizzee=3.
-
- --rroouuttiinnee==<_r_o_u_t_i_n_e>[[,,<_r_o_u_t_i_n_e>......]] --sskkiipp
-
- This option pair allows the user to request that ppccaa perform
- no optimization on the specified routines. The code in
- these routines will be written unchanged to the output file.
-
- --ssiiggnneedd
- No short name.
- Default value: ooffff
-
- By default, a variable declared as cchhaarr is handled as an
- uunnssiiggnneedd cchhaarr. The --ssiiggnneedd option causes a variable
- declared as cchhaarr to be handled as ssiiggnneedd cchhaarr. This option
- is necessary when porting code from platforms that have a C
- compiler that defaults cchhaarr to ssiiggnneedd cchhaarr.
-
- --ssoo==<_i_n_t_e_g_e_r>
- Long name: --ssccaallaarrooppttiimmiizzee==<_i_n_t_e_g_e_r>
- Default value: --ssccaallaarrooppttiimmiizzee==33
-
- The --ssccaallaarrooppttiimmiizzee option sets the level of dusty-deck and
- other serial transformations performed.
-
- The following are the possible values for <_i_n_t_e_g_e_r>:
-
-
- 00 No scalar optimizations are performed.
-
- 11 Only simple scalar optimizations are performed - dead
- code elimination, global forward substitution and
- dusty-deck IF transformations.
-
- 22 Full range of scalar optimizations are performed -
- invariant IF's are floated out of loops, loop
- rerolling/unrolling, array expansion, loop fusion, loop
- peeling and induction variable recognition.
-
- 33 Memory management optimizations are enabled if
- rroouunnddooffff=3.
-
- 44 Reruns dead code elimination optimization after other
- optimizations. Sometimes the other optimizations
- expose more dead code which can be removed.
-
- --ssaasscc==<_i_n_t_e_g_e_r>
- Long name: --sseettaassssoocciiaattiivviittyy==<_i_n_t_e_g_e_r>
- Default value: --sseettaassssoocciiaattiivviittyy==11
-
- The --sseettaassssoocciiaattiivviittyy option provides information on the
- mapping of physical addresses in main memory to cache pages.
- The default value (1) allows a datum in main memory to be
- placed in any of four places in cache.
-
- --sspprr==<_i_n_t_e_g_e_r>
- Long name: --sspprreeggiisstteerrss==<_i_n_t_e_g_e_r>
- Default value: --sspprreeggiisstteerrss==1122
-
- The --sspprreeggiisstteerrss option specifies the number of single
- precision floating point registers each processor has
- available for expression evaluation.
-
- --ssttddiioo
- No short name.
- Default value: ooffff
-
- The --ssttddiioo option instructs ppccaa to perform strength
- reduction on calls to certain functions in the standard I/O
- library. Programs that use functions such as pprriinnttff or
- ssccaannff heavily will generally have improved I/O performance
- when this switch is used. The --ssccaallaarrooppttiimmiizzee=3 option is
- required to enable these transformations.
-
- Use of this option may produce code containing calls to
- functions defined in lliibbkkaappiioo..aa, a library of optimized
- low-level I/O routines. As a result, when linking your
- program using cccc(1) or lldd(1), you may have to include this
- library, using the command-line option --llkkaappiioo. If you use
- cccc(1) with a --ppccaa option to link your program, this is done
- automatically.
-
- If you explicitly specify that I/O using ssccaannff or ffssccaannff be
- done in parallel (for example, by using the ##pprraaggmmaa
- ccoonnccuurrrreenntt ccaallll directive), using --ssttddiioo might cause your
- program to yield incorrect results. To determine if your
- program might have this problem, search the ppccaa output code
- (if you are using cccc(1), use the --ppccaa kkeeeepp option to put the
- output code in a ..MM file) for the functions ____KKIIOOrrdd,
- ____KKIIOOrrff, and ____KKIIOOrrii. If you find these functions (from
- optimized calls to ssccaannff or ffssccaannff on doubles, floats, and
- integers, respectively), the I/O read operations involved
- will not be semaphored properly. This is only a problem if
- they occur in a parallel region, and operate on files that
- other threads may also be operating on concurrently.
-
- If you do no explicit specification of parallel regions, use
- of the --ssttddiioo option is safe.
-
- --ssuu==<_l_i_s_t>
- Long name: --ssuupppprreessss==<_l_i_s_t>
- Default value: nnoo mmeessssaaggee ssuupppprreessssiioonn
-
- The --ssuupppprreessss option tells ppccaa to disable the printing of
- individual classes of messages. These message classes range
- from syntax warning and error messages to messages about the
- optimizations performed.
-
- The following codes can be specified with the --ssuupppprreessss
- option:
-
-
- dd Data dependence messages.
-
- ee Syntax error messages.
-
- ii Informational messages.
-
- nn "Not optimized" messages.
-
- qq Questions.
-
- ss Standardized messages.
-
- ww Syntax warning messages.
-
- --ssyy==<_l_i_s_t>
- Long name: --ssyynnttaaxx==<_l_i_s_t>
- Default value: --ssyynnttaaxx==aa
-
- The --ssyynnttaaxx option tells ppccaa to check for compliance with
- certain syntactic rules.
-
- The --ssyynnttaaxx options are:
-
-
- aa Check for compliance with the SGI-extended Ansi C
- standard.
-
- kk Check for compliance with the SGI-enhanced Kernighan &
- Richie C specification.
-
- --uurr==<_i_n_t_e_g_e_r>
- Long name: --uunnrroollll==<_i_n_t_e_g_e_r>
- Default value: --uunnrroollll==44
-
- --uurr22==<_i_n_t_e_g_e_r>
- Long name: --uunnrroollll22==<_i_n_t_e_g_e_r>
- Default value: --uunnrroollll22==110000
-
- --uurr33==<_i_n_t_e_g_e_r>
- Long name: --uunnrroollll33==<_i_n_t_e_g_e_r>
- Default value: --uunnrroollll33==11
-
- The --uunnrroollll, --uunnrroollll22, and --uunnrroollll33 options control how ppccaa
- unrolls inner loops. The value of the --ssccaallaarrooppttiimmiizzee
- option must be at least 2 in order for unrolling to be
- performed. The unrolling that ppccaa performs is also subject
- to the following constraints imposed by these three options:
-
-
- * The number of times a loop is unrolled will not be larger
- than the value given by the --uunnrroollll option. If the value
- given is zero, the default value is used instead.
-
- * The work done by the loop body is estimated by counting
- operands and operators. This estimate of the amount of
- work done by the unrolled loop body must be less than the
- value of the --uunnrroollll22 option and greater than the value of
- the --uunnrroollll33 option.
-
- The reason for the --uunnrroollll and --uunnrroollll22 options is that
- beyond a certain point, further unrolling of a loop, while
- continuing to increase code size, brings diminishing returns
- in performance since the work being done in the loop body is
- already large compared to the overhead associated with a
- loop iteration, which unrolling is attempting to amortize.
- The reason for the --uunnrroollll33 option is to prevent unrolling
- of very small loops which might be better unrolled or
- software-pipelined by the C compiler. Since these compiler
- optimizations are not on by default, the default value for
- this option is 1. If you would like to take advantage of
- these C compiler capabilities, you should set this option to
- a higher value.
-
- If the constraints imposed by the option values cannot be
- met for a given loop, then it will not be unrolled. If they
- can be met, then the largest degree of unrolling that
- satisfies the constraints will be used.
-
- --vvoollaattiillee
- No short name.
- Default value: ooffff
-
- The --vvoollaattiillee option indicates that all variables are
- implicitly volatile. Use of this option severely limits the
- optimization that can be done.
-
- --[[nn]]6644
- Long name: --[[nnoo]]6644
- Default value: ooffff
-
- This option tells ppccaa that the code is being compiled for a
- 64-bit machine. This affects the size of certain C data
- types.
-
- FFIILLEESS
- //uussrr//lliibb//ppccaa
- The pca program
-
- //uussrr//lliibb6644//ccmmppllrrss//ppccaa
- (32-bit and 64-bit versions)
-
- ffiillee..cc
- C source file
-
- ffiillee..mm
- C transformed file
-
- ffiillee..llsstt
- listing file
-
- //uussrr//lliibb//lliibbkkaappiioo..aa
- Optimized I/O library (for --ssttddiioo option)
-
- //uussrr//lliibb6644//mmiippss33//lliibbkkaappiioo..aa
- (mmiippss11, mmiippss33, and mmiippss44 versions)
-
- //uussrr//lliibb6644//mmiippss44//lliibbkkaappiioo..aa
-
- SSEEEE AALLSSOO
- cccc(1), ccpppp(1), mmppcc(1)
- _I_R_I_S _P_o_w_e_r _C _U_s_e_r'_s _G_u_i_d_e
- _I_R_I_S _P_o_w_e_r _C _Q_u_i_c_k _R_e_f_e_r_e_n_c_e
- _P_a_r_a_l_l_e_l _P_r_o_g_r_a_m_m_i_n_g _o_n _S_i_l_i_c_o_n _G_r_a_p_h_i_c_s _C_o_m_p_u_t_e_r _S_y_s_t_e_m_s
- _P_r_a_c_t_i_c_a_l _P_a_r_a_l_l_e_l _P_r_o_g_r_a_m_m_i_n_g by Dr. Barr Bauer, Academic Press,
- 1991.
- _I_n_t_r_o_d_u_c_t_i_o_n _t_o _P_a_r_a_l_l_e_l _P_r_o_g_r_a_m_m_i_n_g by Steven Brawer, Academic Press,
- 1989.
-
- This man page is available only online.
-